Mediapipeって何?
開発元であるGoogleBardに聞いてみた
MediaPipeは、Googleが開発した、顔、手、身体などの姿勢を検出するためのオープンソースの機械学習ライブラリです。MediaPipeは、iOS、Android、Web、C++、Pythonなどの様々なプラットフォームに対応しています。また、軽量なモデルを使用しているため、モバイル端末でも高速に動作します。
MediaPipeは、様々なアプリケーションに使用されています。例えば、顔認識、手書き文字認識、モーションキャプチャ、バーチャルリアリティなどのアプリケーションに使用されています。
MediaPipeは、姿勢検出を簡単に行うことができるライブラリです。MediaPipeを使用することで、簡単に姿勢検出のアプリケーションを開発することができます。
MediaPipe | Google for Developers
ちょっと難しいのでギャルに聞いてみた
こんちゃー!
最近、姿勢検出ライブラリの「MediaPipe」が話題になってるねー。
MediaPipeって、Googleが開発したオープンソースのライブラリで、顔や手、身体などの特徴点を検出することができるんだー。
これを使うと、顔認識や手書き文字認識、ジェスチャー制御などのアプリケーションを簡単に開発することができるよー。
MediaPipeは、まだ開発中のライブラリだけど、すでに多くの機能が提供されているんだー。興味がある人は、MediaPipeのウェブサイトをチェックしてみてねー。
なるほど人体の姿勢をリアルタイムに検出できるのですな、では早速使いましょう。
Mediapipe Hands のpythonでの環境構築
環境構築はとても簡単です。GoogleColabにもインストールは可能ですが、今回はPCに付属しているカメラをつかって色々な処理をしたいため、ローカル環境で実行していきます。
1.Python 3.8 以上をインストールします。
2.Pip を使用して MediaPipe をインストールします。
pip install mediapipe
Webカメラからの手の検出
サンプルコードをほぼそのまま実行するだけです。内部の処理にはopenCVが使われています。
import cv2
import numpy as np
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
mp_hands = mp.solutions.hands
# カメラキャプチャの設定
camera_no = 0
video_capture = cv2.VideoCapture(camera_no)
video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 360)
if __name__ == '__main__':
with mp_hands.Hands(static_image_mode=True,
max_num_hands=2,
min_detection_confidence=0.5) as hands:
try:
while video_capture.isOpened():
# カメラ画像の取得
ret, frame = video_capture.read()
if ret is False:
print("カメラの取得できず")
break
# 鏡になるよう反転
frame = cv2.flip(frame, 1)
# OpenCVとMediaPipeでRGBの並びが違うため、処理前に変換しておく。
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
image.flags.writeable = False
# 推論処理
hands_results = hands.process(image)
# 前処理の変換を戻しておく。
image.flags.writeable = True
write_image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
# 有効なランドマーク(今回で言えば手)が検出された場合、ランドマークを描画します。
if hands_results.multi_hand_landmarks:
for landmarks in hands_results.multi_hand_landmarks:
mp_drawing.draw_landmarks(
write_image,
landmarks,
mp_hands.HAND_CONNECTIONS,
mp_drawing_styles.get_default_hand_landmarks_style(),
mp_drawing_styles.get_default_hand_connections_style())
# ディスプレイ表示
cv2.imshow('hands', write_image)
key = cv2.waitKey(1)
if key == 27: # ESCが押されたら終了
print("終了")
break
finally:
video_capture.release()
cv2.destroyAllWindows()
実行結果になります。遅延なく手の検出ができています。精度もまあまあ
Mediapipe Handsの使い道をGoogleBardに聞いてみた
せっかくなので使い道をGoogleBardに聞いてみます。
Mediapipe Handsの医療データへの使い方をいくつか提案してください。
Mediapipe Handsは、医療分野で手と指の動きを分析するための強力なツールです。このライブラリは、手術の安全性と効率を向上させたり、リハビリテーションの成功率を高めたりするのに役立ちます。
以下は、Mediapipe Handsを使用した医療分野での手と指の動きの分析の一例です。
- 手術中の外科医の動きを追跡して、手術の安全性と効率を向上させることができます。
- リハビリ中の患者の指の動きの進捗状況を追跡して、リハビリテーションの成功率を高めることができます。
- 患者の指の動きを分析して、病気の早期発見や診断に役立てることができます。
- 患者の指の動きを分析して、新しい治療法やリハビリテーション方法の開発に役立てることができます。
Mediapipe Handsは、医療分野で手と指の動きを分析するための強力なツールです。このライブラリは、手術の安全性と効率を向上させたり、リハビリテーションの成功率を高めたりするのに役立ちます。
2023.05.29 by Google Bard
アイデアは出してくれるみたい、ついでにBingAIにも聞いてみましたが全く同じ意見!多分学習データが同じなのでしょう。他の使い方を聞いてみました。
Mediapipe Handsは、Googleが開発したオープンソースのライブラリで、顔や手、身体などの特徴点を検出することができます。このライブラリを使用すると、顔認識や手書き文字認識、ジェスチャー制御などのアプリケーションを簡単に開発することができます。Mediapipe Handsはまだ開発中のライブラリですが、すでに多くの機能が提供されています。
2023.5.29 by BingAI
次回からは手の座標をCSVに取得して、いろいろ学習させていきます。

コメント